<!DOCTYPE html>
<html>
<head>
    <meta charset="UTF-8">
    <title></title>

    <script type="text/javascript">

        /*
         * && || 非布尔值的情况
         * 	- 对于非布尔值进行与或运算时，
         * 		会先将其转换为布尔值，然后再运算，并且返回原值
         * 	- 与运算：
         * 		- 如果第一个值为true，则必然返回第二个值
         * 		- 如果第一个值为false，则直接返回第一个值
         *
         * 	- 或运算
         * 		- 如果第一个值为true，则直接返回第一个值
         * 		- 如果第一个值为false，则返回第二个值
         *
         * 	- 实践应用：
         * 	 	- 由于js对于Number String Boolean Null Undefined Object之间存在相互转换关系
         * 		- 非与或可以用于非布尔值运算，在日常编码中判断空值和空值初始化。
         */

        //true && true
        //与运算重点：如果两个值都为true，则返回后边的
        var result = 5 && 6;
        // 输出6
        console.log("result = " + result);

        //与运算重点：如果两个值中有false，则返回靠前的false
        //false && true
        result = 0 && 2;
        result = 2 && 0;
        // 输出0
        console.log("result = " + result);

        //false &&　false
        result = NaN && 0;
        result = 0 && NaN;
        // 输出NaN
        console.log("result = " + result);


        //true || true
        //或运算重点：如果第一个值为true，则直接返回第一个值
        result = 2 || 1;
        result = 2 || NaN;
        result = 2 || 0;
        console.log("result = " + result);

        //或运算重点：如果第一个值为false，则直接返回第二个值
        result = NaN || 1;
        result = NaN || 0;
        console.log("result = " + result);

        result = "" || "hello";
        console.log("result = " + result);
        result = -1 || "你好";
        console.log("result = " + result);

    </script>

</head>
<body>
</body>
</html>
